package org.zlw.core.request;

import io.netty.handler.codec.http.cookie.Cookie;
import org.asynchttpclient.Request;
/**
 * 提供可以修改的Request操作接口
 */
public interface IGateWayRequest {

    /**
     *    修改目标服务主机地址
     */
    void setModifyHost(String host);
    /**
     * 获取目标服务主机
     */
    String getModifyHost();

    //有了目标地址我们还需要组装最后的请求

    /**
     * 设置目标服务路径
     * @param path
     */
     void setModifyPath(String path);
    /**
     * 获取目标服务路径
     *
     */
    String getModifyPath();

    //head的请求

    /**
     * 添加请求头信息
     * @param name
     * @param value
     */
    void addHeader(CharSequence name,String value);

    /**
     * 设置请求头信息
     * @param name
     * @param value
     */
    void setHeader(CharSequence name,String value);

    /**
     * 添加请求参数信息
     * Get
     */
    void addQueryParam(String name,String value);
    /**
     * 添加请求参数信息
     * Post
     */
    void addFormParam(String name,String value);

    //请求下一个服务怎么确认下一个服务是安全的呢？
    /**
     * 添加或者替换Cookie
     * Post
     */
    void addOrReplaceCookie(Cookie cookie);

    /**
     * 设置超时时间
     * @param requestTimeout
     */
    void setRequestTimeout(int requestTimeout);

    /**
     * 获取最后的请求路径，包含请求参数，类似：Http://localhost:8080/api/admin?name=111
     * @param request
     */
    void getFinalUrl(int requestTimeout);

    /**
     * 请求对象的构建
     * @return
     */
    Request Build();


}
